Архитектура нейроконтроллера
В предыдущем примере описывалась нейронная сеть с одним выходом. В
компьютерных играх используется несколько иная архитектура - сеть,
построенная по принципу "победитель получает все". Такие архитектуры
полезны в том случае, если выходы должны быть разделены на несколько классов
(рис. 5.9).
В сети, созданной по принципу "победитель получает все", выходная с
большей суммой весов является "победителем" группы и допускается к
действию. В рассматриваемом приложении каждая ячейка представляет определяет
поведение, которое доступно для персонажа в игре. В качестве примеров
поведение можно назвать такие действия, как выстрелить из оружия, убежать,
уклониться. Срабатывание ячейки в группе по принципу "победитель получает
все" приводит к тому, что агент выполняет определенное действие. Когда
агенту вновь позволяется оценить окружающую среду, процесс повторяется. На
рис. 5.10 представлена сеть, которая использовалась для тестирования
архитектуры и метода выбора действия.
Выбранная здесь архитектура (три скрытые ячейки) была определена способом проб и ошибок. Три скрытые ячейки могут быть обучены для всех представленных примеров со 100% точностью Уменьшение количества ячеек до двух или одной приводит к созданию сети, которая не может правильно классифицировать все примеры. Обучение нейроконтроллераНейроконтроллер в игровой среде представляет собой постоянный элемент персонажа. Дальше мы обсудим обучение нейроконтроллера в режиме реального времени. Обучение нейроконтроллера состоит в предоставлении обучающих примеров из небольшой группы желательных действий. Затем следует выполнение алгоритма обратного распространения с учетом желаемого результата и действительного результата. Например, если персонаж имеет пистолет, здоров и видит одного врага, желаемое действие - атаковать. Однако если персонаж здоров, имеет нож, но видит двух врагов, то правильное действие - спрятаться. Данные для тестированияДанные для тестирования представляют собой несколько сценариев с набором действий. Поскольку требуется, чтобы нейроконтррллер вел себя так же, как настоящий человек, мы не будем обучать его для каждого случая. Сеть должна рассчитывать реакцию на входы и выполнять действие, которое будет похожим на обучающие сценарии. Примеры, которые использовались для обучения сети, представлены в табл. 5.1. Таблица 5.1. Примеры, которые используются для обучения нейроконтроллера
Данные, приведенные в табл. 5.1, были переданы сети в произвольном порядке
во время обучения с помощью алгоритма обратного распространения. График
снижения средней ошибки показан на рис. 5.11
В большинстве случаев сеть успешно проходит обучение на всех представленных
примерах. При некоторых запусках один или два примера приводят к
неправильным действиям.
|